Transaction-based enterprise application integration ( EAI ) and development system

ABSTRACT

An architecture for a computing environment wherein transactions preferably model the enterprise and its business processes directly, allowing third-party systems, like ERP, supply chain and Web portals, to be more loosely coupled. Because the system will often be distributed throughout the enterprise, reliance on central critical servers is reduced. The system of the present invention can also fill-in gaps in the functionality of legacy systems, as well as invoke complex applications and direct automated systems. The system offers an architecture where users can model their particular enterprises in business terms so that disparate applications can be linked without custom programming.

[0001] This application claims the benefit of copending provisionalapplication serial No. 60/228,219, filed Aug. 25, 2000, which is reliedon herein and incorporated herein by reference.

BACKGROUND OF THE INVENTION

[0002] The present invention relates to message processing in a networkof interconnected computers and other electronic devices. Moreparticularly, the present invention relates to a system for movingmessages among the interconnected computers based on the transactions tobe performed.

[0003] It is often necessary in various commercial enterprises to routemessages among interconnected computers. For example, an enterpriseresources planning (ERP) system installed in a production facility mayneed to communicate with computers used to control production equipmenton the plant floor. Frequently, however, these various computers willhave disparate operating systems and communication protocols.

[0004] One common approach to allow communication between disparatecomputers in a common enterprise utilizes a centralized, content-basedrouting software engine. Content-based routing uses the content of aparticular piece of information to determine where it needs to be sent.A series of pre-programmed adapters may be provided by the softwarevendor to help integrate the routing engine to various environments.

[0005] It is not unusual for a content-based routing engine to require alarge amount of custom programming in order to operate in a particularsituation. For example, significant custom programming will be requiredif the individual implementations of the environment have beensignificantly customized beyond that which the adapters are programmedto expect. Moreover, an extensive amount of programming may be requiredfor implementation and maintenance in an environment of constantlychanging interfaces and application logic found in the world ofmanufacturing plant automation and B2B trading partners.

SUMMARY OF THE INVENTION

[0006] The present invention recognizes and addresses the foregoingdisadvantages, and others, of prior art constructions and methods.Accordingly, it is an object of the present invention to provide animproved system for moving messages among interconnected computers.

[0007] It is a further object of the present invention to provide animproved system for moving messages among interconnected computers thatsubstantially reduces or eliminates the need for custom programming.

[0008] It is a further object of the present invention to provide asystem for moving messages among interconnected computers in a networkbased on the transactions to be performed.

[0009] Unlike the prior art, the architecture of the present inventionis not based upon a central server that simply maps data and routesmessages between existing applications. Instead, transactions of thepresent invention model the enterprise and its business processesdirectly, allowing third-party systems, like ERP, supply chain and Webportals, to be more loosely coupled. Because the system will often bedistributed throughout the enterprise, reliance on central criticalservers is reduced.

[0010] In addition, the system of the present invention can fill-in gapsin the functionality of legacy systems, as well as invoke complexapplications and direct automated systems. The system offers anenvironment where users can model their particular enterprises inbusiness terms (the often complex and usually incomplete mix of realsystems in which businesses are run), not computer languages. Thus,disparate applications can be linked without custom programming.

[0011] Other objects, features and aspects of the present invention areprovided by various combinations and subcombinations of the disclosedelements, which are discussed in greater detail below.

BRIEF DESCRIPTION OF THE DRAWINGS

[0012] A full and enabling disclosure of the present invention,including the best mode thereof, to one of ordinary skill in the art, isset forth more particularly in the remainder of the specification,including reference to the accompanying drawings, in which:

[0013]FIG. 1 is a block diagram of a plurality of disparate computersinterconnected according to the present invention;

[0014]FIG. 2 is a block diagram showing more detail regarding one of thecomputers of FIG. 1;

[0015]FIG. 3 is a diagrammatic representation of a “context” which maybe generated during use of the system shown in FIG. 1;

[0016]FIG. 4 is a diagram showing various agents that may be used in asystem of the present invention;

[0017]FIG. 5 is a flow chart showing operation of a server agent;

[0018]FIG. 6 is a flow chart showing operation of an interface agent;

[0019]FIG. 7 is a flow chart showing operation of a user login agent;

[0020]FIG. 8 is an exemplary configuration set up screen display;

[0021]FIG. 9 is a diagram showing an exemplary referential relationshipamong preferred configuration objects; and

[0022]FIG. 10 is a further diagram of a system in accordance with thepresent invention by which a simplified example may be described.

[0023] Repeat use of reference characters in the present specificationand drawings is intended to represent same or analogous features orelements of the invention.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

[0024] It is to be understood by one of ordinary skill in the art thatthe present discussion is a description of exemplary embodiments only,and is not intended as limiting the broader aspects of the invention,which broader aspects are embodied in the exemplary constructions.

[0025]FIG. 1 is a diagrammatic representation illustrating the manner inwhich various “trading partners” may be interconnected in accordancewith the present invention. Specifically, a total of four tradingpartners 10 a-d (also referred to as TP1-TP4) communicate with oneanother via a “transaction-based environment” 11 by which messages aredirected according to the transaction to be performed. This is incontrast to many systems of the prior art which have relied on specificmessage routing from one computer to another.

[0026] Further details of the transaction partners can be discerned fromFIG. 2, which illustrates transaction partner TP1 for purposes ofillustration. In this case, a computer running an application 12 hasalso been loaded with “agents” and “configuration objects” to beexplained more fully below. As a result, an interface 14 exists on thecomputer for the purposes of communicating with other trading partners.Messages (including events) sent by application 12 are converted byinterface 14 into a “context” which dictates the action to be taken.

[0027] It is useful at this point to described in detail the agents thatmay be utilized in a system of the present invention, as well as theobjects which model the topography of an enterprise in which the systemis employed.

[0028] I. Agents

[0029] Any number of “agents” may be running on any number of computerssupporting a distributed application according to the present invention.Agents may be implemented as “processes” or “tasks,” depending on theoperating system of the individual computer.

[0030] Agents running on a given computer communicate with each otherusing message queues, implemented according to the facilities providedby the operating system. By default, message queues are implemented inmemory. The queues to certain types of agents can be configured to bedisk queues, freeing the application from limitations on the number ofoutstanding messages and their retention across computer restarts.

[0031] Each computer which supports these agents normally has a localcopy of the configuration (i.e., the collection of “configurationobjects”). Agents typically 10 ad configuration records into sharedmemory regions as they are referenced, so that subsequent references tothose records are efficient.

[0032] Each agent, as it handles transactions and applications, holdscurrent Element values in a data structure referred to as “context.” Asshown in FIG. 3, context 16 may be configured having a header 18,followed by a sequence of element value nodes 20, each of which identifythe Element whose value is stored using its object identifier, the sizeof the value stored, and the value itself.

[0033] Additionally, message nodes and address nodes (e.g., messagenodes 22) may appear among the element value nodes. These are similar tothe element value nodes, except that they contain the text of messagesor address info added and/or used by network agents and related verbs.

[0034] To facilitate efficient lookup, header 18 contains a hash-tableof pointers to element value nodes. So that more than one Element can beadded to context 16 with the same hash-value, element value nodes 20 maycontain a pointer to the next node with the same hash value.

[0035] Additional header fields include the object identifier of thecurrent Transaction (if one has been selected), a unique transactionidentifier, sending and destination agent object identifiers, andsending and destination system object identifiers.

[0036] As shown in FIG. 4, the agents in a particular application mayinclude server agents 24, interface agents 26, network agents 28 anduser login agents 30.

[0037] Referring now to FIG. 5, a server agent processes requests fortransaction services. When a server agent is started on a particularcomputer (as indicated at 32), it reads its configuration object (asindicated at 34) to determine whether it should read requests from amemory-resident message queue or a disk queue. It then waits (asindicated at 36) to receive request messages from the queue.

[0038] A transaction service request is identified as a transactionrequest or a transaction advice. The agent sending a transaction requestexpects a response. The agent sending a transaction advice does notexpect a response. Other possible request message types includeadministrative requests, such as shut-down (as indicated at 38).

[0039] Multiple server agents may be started for a particular serverconfiguration object. In this case, all agents wait for requests on acommon queue. This allows multiple requests to he handledsimultaneously. During the course of processing a request, a serveragent may need to make a request of some other agent. In this case, theserver agent waits for the response to its request on an agent-specific(i.e. process- or task-specific) message queue.

[0040] Upon receipt of a transaction request or advice, the server agentmakes the transaction context contained in the message the currenttransaction context. It then looks up the configuration objectassociated with the transaction object identifier contained in themessage (as indicated at 40), and invokes the associated ruleset (asindicated at 42). In addition to other actions, such as data tableaccess/modifications and requests of other agents, the ruleset typicallymakes changes to the transaction context. It is the resulting contextthat is returned to the requesting agent. Once the ruleset is complete,the agent's local copy of the context is discarded, and the agentreturns to its request queue for the next request message (as indicatedat 44).

[0041] Referring now to FIG. 6, an interface agent translates between astream of messages to and from some external entity into a set oftransaction requests and responses. When an interface agent is startedon a particular computer (as indicated at 46), it reads itsconfiguration object to determine whether it should read requests from amemory-resident message queue or a disk queue (as indicated at 48). Itthen waits to receive request messages from the queue (as indicated at50).

[0042] A request message sent to an interface agent may be an incomingmessage from an associated network agent, or a transactionrequest/advice or response from some other agent (e.g., Server, UserLogin, or other Interface).

[0043] An incoming message from a network agent comprises a contextcontaining message and possibly address nodes. In place of a transactionobject identifier, the context contains a reserved token identifying itas an incoming message (identification indicated at 52).

[0044] Upon receipt of an outgoing transaction request/advice orresponse context, the interface agent makes the received context thecurrent context. It then invokes its out ruleset (as indicated at 54),which may compose and send outgoing message requests to a network agent,invoke additional transactions, or initiate a transaction response. Oncethe ruleset is complete, the agent returns to waiting for messages fromits queue (as indicated at 56).

[0045] Upon receipt of an incoming message context from a network agent,the interface agent invokes its in ruleset (as indicated at 58). The inruleset may examine the text of the message received, invoketransactions, or restore a previously pended transaction context andinitiate a response. Once the ruleset is complete, the agent returns towaiting for messages from its queue (as indicated at 56).

[0046] A network agent handles the protocol by which communications withan external entity are implemented, converting a sequence of events andassociated timings into a stream of incoming and outgoing messages. Whena network agent is started on a particular computer, it reads itsconfiguration object to determine whether it should read requests from amemory-resident message queue or a disk queue, and to discover thedetails of its particular communications protocol (it also reads itsassociated protocol configuration object). It then waits to receiverequest messages from the queue, while it handles communications withthe external entity.

[0047] Upon receipt of an outgoing message request from its associatedinterface agent, the network agent sends, or queues to send as soon aspossible, the associated message to the external entity. Upon receipt ofan incoming message from an external entity, the network agent composesa context containing the text of the received message and sends thecontext to its associated interface agent.

[0048] Referring now to FIG. 7, a user login (aka screen) agent handlesapplication presentation services, including full-screen presentationand capture of data, and full-screen user access to applicationfunctionality. Upon invocation (as indicated at 60), a user login agentprompts the user for username and password (as indicated at 62). Theuser login agent then reads its configuration object (as indicated at64). If a user configuration object corresponding to the enteredusername is found (as indicated at 66), and the entered password matchesthe associated password information, the associated ruleset is invoked(as indicated at 68). The Ruleset may use a variety of verbs to invokemenus, listings and data-entry screens identified by Screenconfiguration objects. If a user is not found, the agent exits (asindicated at 70).

[0049] II. Configuration

[0050] Users configuring an application according to the presentinvention will be presented a series of screens, such as that shown inFIG. 8, that describe different and independent aspects of theparticular computing environment. The resulting “configuration objects”are stored on disk as a set of records of varying length in a file withassociated indexes. At run-time, configuration objects are read as theyare referenced into memory regions which are shared among executingagent processes, including server agents (transaction service agents),interface agents, network agents and user login agents (i.e., screenagents).

[0051] Each configuration object has an object type, an object id, anobject name, and an object version. Users configuring an application maygenerally refer to objects by their object type and object name, whichuniquely identify them. Object type and object id also uniquely identifya configuration object. The object id may be arbitrarily assigned when aconfiguration object is created. Object type and object id are generallyused internally by the system to store relationships among configurationobjects and values of objects at run-time. The combination of objecttype and id is often referred to here as an object identifier.

[0052] The referential relationships among configuration objects isshown in FIG. 9. With this as a backdrop, various configuration objectswill now be described.

[0053] (1) Class (Data Dictionary Object)

[0054] Class configuration objects identify data types and associateddefault values. Classes are generally used as attributes of otherobjects, such as Data Elements. Attribute Description Data TypeIdentifies the structure of data. Possible values may include binaryinteger (1, 2, 4, or 8 bytes), binary floating point (4 or 8 bytes)character (fixed-length, null- terminated, or leading length byte/word;character set ASCII or EBCDIC), bit string (fixed-length or leadinglength byte/word), packed decimal (signed or unsigned; fixed length orleading length byte), or object identifier. Extent1 Specifies the lengthof data. For variable-length Data Types, specifies the maximum number ofcharacters, digits or hits. For binary Data Types, specifies the numberof significant digits (precision). Extent2 For floating point DataTypes, specifies the number of decimal places to display. Default LabelThe label to use when displaying or prompting for data. Default (2) Theheaders to use when displaying Headers columns of data. Default Adescription to use when displaying Description or prompting for data(the default help text). Default Value The object identifier of aFunction which determines a default value for the data when no explicitvalue has been set. Default The object identifier of a Function whichdetermines whether or not the value set for the data is valid (asdefined by the application). Class The object identifier of a Classwhich describes the format of the data. Label The label to use whendisplaying or prompting for data; if not specified, inherited from theClass. Headers (2) The headers to use when displaying columns of data;if not specified, inherited from the Data Class. Description Adescription to use when displaying or prompting for data (the defaulthelp text); if not specified, inherited from the Class. Default ValueThe object identifier of a Function which determines a default value forthe element when no explicit value has been set; if not specified,inherited from the Class.

[0055] Item configuration objects identify atomic units of data whichmay have a system-wide value on the current System. Because the value ofan Item is held in configuration, all agents active on a given systemsee the value assigned to the Item most recently by any agent. AttributeDescription Data Type Identifies the structure of data. Possible valuesmay include binary integer (1, 2, 4, or 8 bytes), binary floating point(4 or 8 bytes), character (fixed-length, null- terminated, or leadinglength byte/word; character set ASCII or EBCDIC), bit string(fixed-length or leading length byte/word), packed decimal (signed orunsigned; fixed length or leading length byte), or object identifier.Extent1 Specifies the length of data. For variable-length Data Types,specifies the maximum number of characters, digits or bits. For binaryData Types, specifics the number of significant digits (precision).Extent2 For floating point Data Types, specifies the number of decimalplaces to display. Dimension Identifies the number values which may beset. If greater than one, the Item may be thought of as an array. ValueThe value returned when this Item is referenced.

[0056] (4) Record (Data Dictionary Object)

[0057] Record configuration objects identify arrangements of fields,which may be Elements or sub-Records. These arrangements may bepositional, in which the fields and the order in which they appear ispre-determined; bit-mapped, in which case certain fields appear in therecord only if an associated controlling bit is set; or tagged, in whichcase fields may appear in any order, and are identified by a precedingunique tag (possibly with an associated field length indicator).Attribute Description Type Identifies the type of field arrangement.Possible values include positional, bit-mapped, and tagged (tag beforelength, length before tag, or tag only). Tag Class The object identifierof a Class which specifies the structure of field tags (if Type istagged). The object identifier of a Class which specifies the structureof field length indicators (if Type is tagged). Fields Identifies thefields which may appear in the record. Each entry in Fields has thefollowing attributes:  Object  The object identifier of an  Identifier Element or Record which describes  this field.  Dimension  Identifiesthe number times this  field is repeated at this  position (i.e., thefield is an  array of values). The array  dimension may depend on thevalue  of another field in the record,  in which ease Dimension is negative and its absolute value  represents which entry in Fields specifies the array dimension.  Optional  (flag) If set, indicates thatthe  field need not appear in every  instance of the Record. Bit-Mapped(flag) If set, indicates that the field's existence in any instance ofthe record depends on the value of a bit in a bit-map. Existence (flag)If set, indicates that the Depends field's existence in any instance ofthe record depends on the value returned by the Function identified bythe Exists attribute. Length Depends (flag) If set, indicates that thefield's length in any instance of the record depends on the valuereturned by the Function identified by the Length attribute. Terminated(flag) If set, indicates that the field's length varies (up to itsmaximum length), in that the end of the field is marked by one of a setof Terminators. Escaped (flag) If set, and Terminated is set, indicatesthat Terminators may be included the field data if preceded by an Escapecharacter. Parent Bit-map The Object Identifier of the field which actsas the bit map containing the bit which controls the existence of thisfield (if Bit-Mapped is set). Parent More than one field may have theOccurrence Parent Bitmap's Object Identifier. If the intended ParentBit-map is not the first of these, this indicates which one it is (ifBit-Mapped is set). Bit-map Format Identifies how the Parent Bit-map isto be interpreted. Possible values include binary encoded, characterencoded (a string of “0” and “1” characters), and hexadecimal encoded.Bit-map Identifies which bit in the Position Parent Bit-map controls theexistence of this field (if Bit- Mapped is set). Tag Value Theparticular tag value that identifies this field (if Type is tagged).When this value is encountered in the record, the field is assumed tofollow (possibly following with an associated length indication).Terminators A set of characters, any of which indicate the end of thisfield when they appear (if Terminated is set). Escape A character which,when it appears in the field data, indicates that the character whichfollows it is to be treated as field data (if Terminated and Escaped areset). Exists The object identifier of a Function which when evaluated(as a particular instance of a Record is being analyzed) determineswhether or not this field appears in the record (if Existence Depends isset). Length The object identifier of a Function which when evaluated(as a particular instance of a Record is being analyzed) determines thelength of this field as it appears in the record (if Length Depends isset).

[0058] (5) File (Data Dictionary Object)

[0059] File (or Table) configuration objects identify long term storage(typically on disk) for data records. Attribute Description OrganizationSpecifies how the data is stored. Possible values include (but are notlimited to) Fixed (records are of a specified length in aoperating-system native flat file), Varying (vfile format, in which allrecords have a leading and trailing length word, the trailing lengthword falling on the nearest even byte boundary; deleted records areidentified by a negative record length), or Queue (internal format forholding messages destined for a particular agent). Record The objectidentifier of a Definition Record which describes the format of recordsin the File. System The object identifier of a System which identifiesthe location of the file in a distributed system. If not set, aninstance of the File can exist on each System. Data Path Theoperating-system and Organization dependent path which locates the data.This may specify, for example, a directory and file name, and may berelative. Open Mode The way in which multiple agent processes coordinateaccess to the data in the File. Possible values may include recordlocking, and exclusive. Deleted The object identifier of an Index byRecord which areas of the data from which Index records have beendeleted may be located. Indexes A list of object identifiers, eachidentifying an Index by which records may be located and sorted.

[0060] (6) Index (Data Dictionary Object)

[0061] Key configuration objects are used to sort records in Files(Tables). Attribute Description File The object identifier of theassociated File (Table). Data Path The operating-system and FileOrganization dependent path which locates the indexing data. This mayspecify, for example, a directory and file name, and may be relative.Collation Determines sort order. Possible values include ascending ordescending ASCII, Alphabetic or numeric. Key A list of objectidentifiers, each Definitions identifying a Key that specifies whatrecord-associated data is assembled to create entries in the index.Since more than one Key may be specified, records may have multipleindex entries.

[0062] (7) Key (Data Dictionary Object)

[0063] Index configuration objects specify what record-associated datais assembled to create entries in an associated Index. AttributeDescription File (Table) The object identifier of the associated File(Table). Mode Indicates whether entries in the Index are created forrecords which are missing some or all of the values from whichComponents are resolved. Index The object identifier of the associatedIndex. Components Each component entry identifies Elements in the Recordfrom which data is to be taken to form an entry in the Index. These dataare concatenated to form the entry. Element The object identifier of theelement from which the component is taken. This is fully qualified, asnecessary, with the object identifiers of any sub-Records in which theElement appears, and, in the case of arrays (of the Element and/or anysub-Record) the desired array instance(s). Offset If set, identifies thefirst byte of the Element value to be used. Length If set, identifiesthe number of bytes of the Element value to be used. Note that Offsetand Length might be thought of as a sub-string of the value.

[0064] (8) System (System Topology Object)

[0065] System configuration objects identify the locations wheretransaction handling agents or resources reside. A “system” mayrepresent a particular software application, a computer, a group ofcomputers, a communications network, or other equipment with which adistributed implementation of the present architecture may communicateand which offers transaction services. Systems on which the presentarchitecture is installed and which support one or moretransaction-handling agents which share the current configuration arereferred to as “internal” to the distributed implementation. Others maybe referred to as “external.” It is possible for a single computer tohouse multiple Systems (both internal and external) simultaneously. Notethat it is not necessary to identify as Systems those applications,computers, networks or equipment which only originate Transactions(i.e., which offer no transaction services). Attribute DescriptionInterface ID The object identifier of an Interface through which tocommunicate with the System. Does not need to be specified for“internal” systems.

[0066] (9) Server (System Topology Object)

[0067] Server (transaction service) configuration objects identifyentities which process transactions. Servers are “internal” if theirassociated System is “internal,” and “external” otherwise. AttributeDescription System The object identifier of the System on which theServer agent executes. Queue The object identifier of a File that holdsrequests destined for the Server agent. If not set, requests are held inmemory. Does not need to be specified if the System attribute specifiedis “external”.

[0068] (10) Transaction (System Topology Object)

[0069] Transaction configuration objects identify atomic units of workin an application implemented according to the invention. AttributeDescription Ruleset The object identifier of a Ruleset that specifieshow the Transaction is to be processed. Does not need to be specified ifall of the Servers specified are “external”. Servers A list of objectidentifiers identifying the Servers which are capable of processing theTransaction.

[0070] (11) Interface (System Topology Object)

[0071] Interface configuration objects identify agents which handle theflow of transactions to and from external applications, computers,communications networks or other equipment. Attribute Description SystemThe object identifier of the System on which the interface agentexecutes. Queue The object identifier of a Pile that holds requestsdestined for the interface agent. If not set, requests are held inmemory. In Ruleset The object identifier of a Ruleset which specifieshow to interpret incoming messages or events. This ruleset may specifythe interpretation rules completely, or may select an In Message whichspecifies additional interpretation rules. Out Ruleset The objectidentifier of a Ruleset which specifies how to construct outgoingmessages or events. This ruleset may specify the construction rulescompletely, or may select an Out Message which specifies additionalconstruction rules. Networks A list of object identifiers identifyingthe Networks which handle messages passing to and from the externalapplications, computers, communications networks or other equipment.

[0072] (12) In Message, Out Message (System Topology Object)

[0073] In Message and Out Message configuration objects identifyadditional message processing rules to be invoked by interfaces. Forexample, the In Ruleset for a given Interface may have rules whichidentify categories of messages, and select appropriate In Message typesfor detailed analysis depending on the category. Note that this is mostuseful for interfaces that must handle complex sets of messages.Attribute Description Ruleset The object identifier of a Ruleset thatspecifies how the message is to be processed (analyzed or constructed).

[0074] (13) Network (System Topology Object)

[0075] Network configuration objects identify agents which handlemessages and/or event notifications to and from external applications,computers, communications networks or other equipment. AttributeDescription System The object identifier of the System on which theNetwork agent executes. Queue The object identifier of a File that holdsrequests destined for the Network agent. If not set, requests are heldin memory. Interface The object identifier of the Interface to which theNetwork agent sends incoming messages, and from which it receivesoutgoing messages. Type Identifies the type of external application,computer, communications network or other equipment with which tocommunicate (e.g. generic, Intermec) Protocol The object identifier of aProtocol object which specifies protocol type and parameters necessaryfor communication with the external application, computer,communications network or other equipment. Type Identifies the type ofexternal application, computer, communications network or otherequipment with which to communicate (e.g. generic, Intermec) NetworkInfo Identifies any additional, Network Type-specific communicationsparameters. (14)   Protocol (System Topology Object)    Protocolconfiguration objects identify communications protocol parametersnecessary for communications with external applications, computers,communications networks or other equipment. Attribute Description TypeThe type of communications protocol to use. Possible values include (butare not limited to) async, bisync, TCP/IP (client or server), UDP, X25(PVC or SVC), LU2, LU6.2, etc.

[0076] Additional attributes vary depending on the Type selected. Forexample, async attributes include Baud Rate, Character Size, Stop Bits,Parity, Flow Control, and Record Demarcation (which includes recordlength if records are of a fixed length, or the end-of-record characterotherwise). Similarly, TCP/IP Client attributes include Destination HostName, Service Name, and Record Demarcation.

[0077] (15) Device (System Topology Object)

[0078] Device configuration objects identify external devices that theapplication would like to manage. The application can send explicitmessages to Devices (e.g. “print” commands to a label printer).Additionally, the system can manage the download of configuration data(e.g. form definitions, programs, etc.) to Devices. AttributeDescription Type The type of Device (e.g. Intermec label printer).Address Device address information by which messages to/from the Deviceare routed/identified. Network The object identifier of the Networkwhich handles communications with the Device. Control Names whichidentify configuration Entries data (formats, programs, etc.) currentlydownloaded to the Device. The names are Type specific, but normallythose of Control objects which further specify what configuration datais downloaded.

[0079] (16) Control (System Topology Object)

[0080] Control configuration objects identify configuration data thatmay be downloaded to Devices (e.g. form definitions, programs, etc.), oradditional Network-specific configuration (e.g. data-point definitions).Attribute Description Type The type of Device (e.g. Intermec labelprinter). Buffer Type Specifies bow Buffer is to be interpreted.Possible values include (but are not limited to) Direct (Buffer containsliteral download data), Indirect (Buffer contains the pathname of a filewhich contains the download data), or Data Point (Buffer contains a listof data point definitions). Buffer Contains control information (asspecified by Buffer Type).

[0081] (17) Screen (Application Presentation Object)

[0082] Screen configuration objects identify application presentationscreens, used for user input and/or display of data. AttributeDescription Detail Object The object identifier of a Menu, Listing, orData Entry that specifies the details of the data presentation. TitleText which may appear as a screen title. Actions A list of objectidentifiers of Rulesets which can be invoked at the request of the userwhen the Screen is active, via associated function key or button. EachAction has an associated label that should describe the functionimplemented by the Ruleset. Access Control A list of entries controllingwho may use this Screen, and which of the Actions they are allowed. Eachentry has the following attributes: User or The object identifier of aUser or Group Group for which access is being specified. The systemfirst checks for an entry for the current user; if none exists, thesystem checks for an entry for the current user's group. Access Allowedor disallowed. The disallowed Type value is useful for excluding aparticular member of a group while still allowing access for the group.Allowed Indicates which of the Actions may be Actions invoked by theuser or group.

[0083] (18) Menu (Application Presentation Object)

[0084] Menu configuration objects identify application presentationmenus. When a Screen which refers to a Menu is invoked, a list ofselections from which the user may select is displayed. AttributeDescription Selections A list of entries that determines what actionsare available from the Menu. Each entry has the following attributes:Action The object identifier of a Ruleset which can be invoked at therequest of the user when the Menu is active, via associated key-press orbutton. Label Text which should describe the function implemented by theRuleset. One of the letters of the Label may be identified as a “hotkey,” in which case it will appear underlined (or otherwise highlighted)to indicate that this selection may be made by pressing the associatedletter key.

[0085] (19) Listing (Application Presentation Object)

[0086] Listing configuration objects identify application presentationlistings. When a Screen which refers to a Listing is invoked, a list isdisplayed which is constructed from a specified set of records in atable. Attribute Description Index The object identifier of an Indexwhich determines the File from which records are selected, and the orderin which they appear. Record The object identifier of a RecordDetermination which determines how the records are to be interpreted. Bydefault, the Record Definition attribute of the associated File is used.First Key The object identifier of a Function which, when evaluated,determines the value of key of the first record to be displayed in thelist. Last Key The object identifier of a Function which, whenevaluated, determines the value of key of the last record to hedisplayed in the list. Filter The object identifier of a Function which,when evaluated for each record, determines whether or not the record isto be included in the list. Display The object identifier of a Functionwhich, when evaluated for each record, determines the text to bedisplayed list.

[0087] (20) Data Entry (Application Presentation Object)

[0088] Data Entry configuration objects identify data entry screens.When a Screen which refers to a Data Entry is invoked, a specifiedarrangement of fields is displayed. Some or all of the fields may beedited by the user, as allowed by the configuration. AttributeDescription Record The object identifier of a Record which determinesthe set of fields which are to appear on the screen. Fields A set ofentries which determines how each of the Elements in the Record are tobe displayed. Each entry has the following attributes: Label The columnand row at which the field Location label is to be displayed. Label Thenumber of characters of field Length label to display. Label Displayattributes of the label (e.g. Display underlined, hold, dim, etc.) ModesField The column and row at which the field Locations is to bedisplayed. Field The number of characters of field to Length display.Field Display attributes of the field (e.g., Display underlined bold,dim, etc.) Modes Field Controls how data is entered (e.g., Controlnormal, output-only, select-only, Modes etc). Detail The objectidentifier of a Ruleset Ruleset which is invoked when the user requestsdetails about this field. This Ruleset can implement any applicationfunctionality, but typically allows selection of a value for the field.

[0089] (21) Report (Application Presentation Object)

[0090] Report configuration objects identify reports which may bedisplayed or printed. A Report consists of optional title and headerlines, primary lines composed of a set of columns, and alternate linesof arbitrary text that may be interspersed with the primary lines.Attribute Description Index The object identifier of an Index whichdetermines the File from which records are selected, and the order inwhich they appear. First Key The object identifier of a Function which,when evaluated, determines the value of key of the first record fromwhich to generate report lines. Last Key The object identifier of aFunction which, when evaluated, determines the value of key of the lastrecord from which to generate report lines. Report Format Identifies theformat of the report (e.g., standard, free-format, form, etc.) TitleLines The object identifiers of Functions which, when evaluated,determine the text to appear in the report titles (at the top of eachpage in a standard format report). Header Fields The object identifiersof Functions which, when evaluated, determine the text to appear in thereport headers (typically on each page before column headers, andprimary and alternate report lines, although, in the ease of formreports, Header Field values may appear anywhere on the form). EachHeader Field also has associated formatting information, such as indent,width and justification. Page Breaks The object identifiers of Functionswhich, when evaluated after reading a record, determine whether toinsert a page break before generating any additional primary oralternate lines. Pre-Processing The object identifier of a Ruleset whichis evaluated after reading each record and before any additionalprocessing is done. Post- The object identifier of a Ruleset Processingwhich is evaluated before reading the next record, after all processingfor the current record is complete. Filter The object identifier of aFunction which is evaluated after reading each record and performing thePre- Processing and which determines whether primary lines are generated(or Slave processing occurs) for the record. Slave The object identifierof a Report controls report formatting. For each record read asspecified in the current Report, a complete set of records is processedas defined by the Slave Report configuration. Alternate Entries whichcontrol arbitrary text Lines lines which may appear on the report. Eachentry has the following attributes: Filter The object identifier of aFunction which is evaluated for each record to determine whether thisAlternate Line is to be generated. Contents The object identifier of aFunction which, when evaluated, determines the text to appear. ExplodeThe object identifier of a Ruleset which can be invoked when theAlternate Line text is selected by a user who is viewing the reportonline. Format Text width, indent and justification. Location Whetherthe Alternate Line is to be generated before or after the primary line,and/or at the end of the report. Primary Line Includes: number of columnheaders and Format footers; whether to suppress column headers andfooters on pages on which no primary line appears; whether or notfooters “float” (appear immediately after the last detail line) or arefixed at the bottom of each page. Primary Line The object identifier ofa Ruleset Explode which can be invoked when the primary line is selectedby a user who is viewing the report on-line. Primary Line Entries whichcontrol primary text Columns lines appearing on the report. Each entrycontrols a column of output and has the following attributes: ContentsThe object identifier of a Function or Element which, when evaluated,determines the text to appear in the column. Format Column width, indentand justification. Headers The object identifiers of a Function which,when evaluated, determine the text to appear at the top of the column oneach page. Each of the Headers has associated formatting information,including justification. Footers The object identifiers of a Functionwhich, when evaluated, determine the text to appear at the bottom of thecolumn on each page. Each of the Footers has associated formattinginformation, including justification.

[0091] (22) User (User Access Object)

[0092] User configuration objects identify users who may accessapplications via application presentation objects. Attribute DescriptionGroup Name The Group to which the User belongs. Password informationagainst which to verify entered passwords. Ruleset The object identifierof a Ruleset which is invoked when the User logs in. If not set, theRuleset for the Group is invoked.

[0093] (23) Group (User Access Object)

[0094] Group configuration objects identify groups of users who mayaccess applications via application presentation objects. AttributeDescription Default The object identifier of a Ruleset Ruleset which maybe invoked when a User in this Group logs in.

[0095] (24) Ruleset (Rule Management Object)

[0096] Ruleset configuration objects encode application-specificfunctionality. Rulesets are composed using a set of verbs to form rules.A rule is composed of an antecedent and a consequent. An antecedent is aconjunction of conditionals (constructed of verbs), evaluated one at atime. If the conditionals return a non-false value, the rule is said tobe fired. A consequent is a list of statements (constructed of verbs) tobe evaluated when the rule is fired. The first rule to be firedcompletes the invocation of the Ruleset, and none of its subsequentrules are evaluated.

[0097] The syntax is as follows: Ruleset: = always: Stmt; [[Stmt;] . . .] Ruleset: = Rule [Rule . . . ] [DfltRule ] Rule: =  if: Cond [[ & Cond]. . . ]      then: Stmt; [[ Stmt; ] . . . ]] DfltRule: =  otherwise:Stmt; [[ Stmt;] . . . ] Cond: =  verb ([arg . . . ] ) Stmt: =  verb([arg . . . ] ) Arg: =  verb ([arg . . . ] ) Arg: =  literal (teststring, name or number)

[0098] (25) Function (Rule Management Object)

[0099] Function configuration objects encode application-specificfunctionality. When invoked, a Function returns a value. Functions arecomposed by nesting verbs.

[0100] The syntax is as follows: Function: =  verb ([arg . . . ]); Arg:=  verb ([arg . . . ]) Arg: =  literal (text string, name or number)

[0101] III. Example

[0102] With reference to FIG. 10, a hypothetical transaction can befollowed through a system of the present invention. Imagine thetransaction is a financial transaction that must check with an externalsystem for verification. The result of the transaction will be sent backto the originating external system as a response.

[0103] STEP I Message Origination

[0104] Network agent NET1 (indicated at 80) using Protocol PROT1 readsin a message from its external system 82.

[0105] NET1 sends this message to its associated Interface agent IFC1(indicated at 84).

[0106] IFC1 examines the message to determine what type of message itis. Using the appropriate record structure (REC1) as a map, it thenbinds the message into an initialized Context. This puts the messagedata into the various data Elements within Context, making thetransaction context independent of the message layout.

[0107] IFC1 then sends the Context to the appropriate Server agent SVR1(indicated at 86) for processing. Actually, the routing to the correctserver takes place automatically within the system. This allows for busyservers to be alleviated during periods of heavy stress.

[0108] STEP II Initial Processing

[0109] SVR1 reads the Context and performs the desired Transaction TRN1.

[0110] TRN1 needs to request information from external system 2(indicated at 88) about the information in Context.

[0111] STEP III Information Request

[0112] Context is sent to interface agent IFC2 (indicated at 90).

[0113] IFC2 builds a message from Context using REC2.

[0114] The message is sent to network agent NET2 (indicated at 92).

[0115] NET2 reads the message and transmits it to external system 2using PROT2.

[0116] STEP IV Information Response

[0117] Some time later, NET2 reads a message in from external system 88.

[0118] NET2 sends the message to IFC2.

[0119] IFC2 identifies the message as the response to TRN1. It binds themessage into the Context of TRN1 instead of an initialized Context.Thus, the response from the external system becomes part of our Context.

[0120] IFC2 sends the Context back to SVR1.

[0121] STEP V Secondary Processing

[0122] SVR1 uses the response information in additional processing.

[0123] TRN1 updates files with the initial result.

[0124] TRN1 sends Context to another server agent SVR2 (indicated at 94)for additional processing.

[0125] SVR2 reads the Context and performs TRN2.

[0126] TRN2 updates files with the results.

[0127] Context is sent back to the originating Interface IFC1 as aresponse. Thus, the transaction request has been fulfilled.

[0128] STEP VI Send Result

[0129] IFC1 builds a message from Context using REC3.

[0130] The message is sent to NET1.

[0131] NET1 reads the message and transmits it using PROT1.

[0132] While preferred embodiments of the present invention andpreferred methods of practicing same have been shown and described,modifications and variations may be made by thereto by those of ordinaryskill in the art without departing from the spirit and scope of thepresent invention, which is more particularly set forth in the appendedclaims. In addition, it should be understood that aspects of the variousembodiments may be interchanged both in whole or in part. Furthermore,those of ordinary skill in the art will appreciate that the foregoingdescription is by way of example only, and is not intended to belimitative of the invention so further described in such appendedclaims.

What is claimed is:
 1. A method of performing transactions betweendisparate systems in a computing environment, said method comprisingsteps of: (a) receiving a first message in a first message format froman originating system, said first message having request data indicativeof a transaction request; (b) at a first interface, evaluating saidfirst message to ascertain said request data; (c) said first interfacefurther applying a predetermined criteria to said request data so as togenerate said transaction request; (d) routing said transaction requestto an appropriate service system to be responsively fulfilled; (e)fulfilling said transaction request at said service system andindicating same to said first interface; and (f) issuing via said firstinterface a second message to said originating system in said firstmessage format as a first response message to said transaction request.2. A method as set forth in claim 1, wherein said first interfaceincludes a network agent and an interface agent, said network agentbeing operative to extract said request data from said first message andsaid interface agent being operative to produce said transaction requesttherefrom.
 3. A method as set forth in claim 2, wherein said servicesystem includes a server agent in communication with said interfaceagent.
 4. A method as set forth in claim 3, wherein said agentscommunicate with each other via message queues.
 5. A method as set forthin claim 1, wherein said first interface functions to generate a contextdata structure organizationally independent of said first messageformat, said context data structure being acted upon in servicing saidtransaction request.
 6. A method as set forth in claim 5, wherein saidtransaction request is routed to said service system through applicationof topological configuration objects to a predetermined ruleset.
 7. Amethod as set forth in claim 6, wherein said predefined configurationobjects are modifiable independently of said ruleset.
 8. A method as setforth in claim 1, wherein said step of fulfilling said transactionrequest comprises: (g) at a second interface, issuing a third message ina second message format to an auxiliary system requesting information;(h) receiving a second response message at said second interface in saidsecond message format containing said information; and (i) extractingsaid information from said second message at said second interface andproviding said information to said service system.
 9. A method as setforth in claim 8, wherein said first message format and said secondmessage format are different protocols.
 10. A method as set forth inclaim 8, wherein said first message format and said second messageformat are equivalent protocols.
 11. In a computing environmentincluding a plurality of computer systems, an arrangement comprising:each of said computer systems being equipped with agents operative totransfer external messages into and out of a particular message format;each of said computer systems further having stored configurationobjects indicating expected transaction requests and correspondingservice systems; and such that transaction requests are disassociatedfrom incoming message by said agents and configuration objects, saidtransaction requests being automatically routed to appropriate servicesystems for fulfillment.
 12. An arrangement as set forth in claim 11,wherein said agents include: network agents operative to extract requestdata from said external messages; interface agents operative to producesaid transaction request from said request data; and server agents incommunication with said interface agents so as to fulfill saidtransaction requests.
 13. An arrangement as set forth in claim 12,wherein said agents communicate with each other using message queues.14. An arrangement as set forth in claim 11, wherein said agentsfunction to generate a context data structure organizationallyindependent of said external messages, said context data structure beingacted upon in fulfilling said transaction request.
 15. An arrangement asset forth in claim 11, wherein said configuration objects are easilymodifiable to reflect changes in said computing environment.
 16. Anarrangement for performing transactions between a first computer entityand a second computer entity having disparate operating systems, saidarrangement comprising: a first interface running first agents accordingto predetermined configuration objects; a second interface runningsecond agents according to said predetermined configuration objects;said first interface being operative to translate a first message in afirst message format received from said first computer entity into anorganizationally independent context data structure; and said secondinterface reading and acting upon said context data structure to producea second message in a second message format issued to said secondcomputer entity.
 17. An arrangement as set forth in claim 16, wherein:said second computer entity issues a third message in said secondmessage format in response to said second message, said second interfacebeing operative to update said context data structure based thereon; andsaid first interface responsively acting to read said context datastructure and produce a fourth message in said first message format backto said first computer entity.
 18. An arrangement as set forth in claim16, wherein said context data structure includes a hash table containingpointers to a plurality of element value locations.